#include "Spieldefinitionen.h"

#include <map>
#include <algorithm>
#include <cassert>

std::string getFigurString(Figur::EFigur const& f)
{
	std::map<Figur::EFigur, std::string> figuren;
	figuren[Figur::Oberst_Von_Gatow] = "Oberst von Gatow";
	figuren[Figur::Professor_Bloom] = "Professor Bloom";
	figuren[Figur::Reverend_Gruen] = "Reverend Gruen";
	figuren[Figur::Baronin_Von_Porz] = "Baronin von Porz";
	figuren[Figur::Fraeulein_Gloria] = "Fraulein Gloria";
	figuren[Figur::Frau_Weiss] = "Frau Weiss";

	auto large = std::max_element(std::begin(figuren), std::end(figuren), [](std::pair<Figur::EFigur, std::string> const& largest, std::pair<Figur::EFigur, std::string> const& x){return largest.second.size() < x.second.size();});
	std::size_t s = (*large).second.size();

	auto it = figuren.find(f);

	assert(it != std::end(figuren));

	return it->second;
}

std::string getWaffeString(Waffe::EWaffe const& w)
{
	std::map<Waffe::EWaffe, std::string> waffen;
	waffen[Waffe::Pistole] = "Pistole";
	waffen[Waffe::Dolch] = "Dolch";
	waffen[Waffe::Seil] = "Seil";
	waffen[Waffe::Kerzenleuchter] = "Kerzenleuchter";
	waffen[Waffe::Rohrzange] = "Rohrzange";
	waffen[Waffe::Heizungsrohr] = "Heizungsrohr";

	auto large = std::max_element(std::begin(waffen), std::end(waffen), [](std::pair<Waffe::EWaffe, std::string> const& largest, std::pair<Waffe::EWaffe, std::string> const& x){return largest.second.size() < x.second.size();});
	std::size_t s = (*large).second.size();

	auto it = waffen.find(w);

	assert(it != std::end(waffen));

	return it->second;
}

std::string getZimmerString(Zimmer::EZimmer const& z)
{
	std::map<Zimmer::EZimmer, std::string> zimmer;
	zimmer[Zimmer::Kueche] = "Kueche";
	zimmer[Zimmer::Musikzimmer] = "Musikzimmer";
	zimmer[Zimmer::Wintergarten] = "Wintergarten";
	zimmer[Zimmer::Billardzimmer] = "Billardzimmer";
	zimmer[Zimmer::Bibliothek] = "Bibliothek";
	zimmer[Zimmer::Arbeitszimmer] = "Arbeitszimmer";
	zimmer[Zimmer::Eingangshalle] = "Eingangshalle";
	zimmer[Zimmer::Salon] = "Salon";
	zimmer[Zimmer::Speisezimmer] = "Speisezimmer";

	auto large = std::max_element(std::begin(zimmer), std::end(zimmer), [](std::pair<Zimmer::EZimmer, std::string> const& largest, std::pair<Zimmer::EZimmer, std::string> const& x){return largest.second.size() < x.second.size();});
	std::size_t s = (*large).second.size();

	auto it = zimmer.find(z);

	assert(it != std::end(zimmer));

	return it->second;
}




